<?php
class Session extends Usuario 
{
        var  $es_Administrador="[
                                    joshua.winEnvios,
                                    new MyDesktop.Clientes(),
                                    joshua.winEmbarques,
                                    new MyDesktop.Sucursales(),
                                    new MyDesktop.UsuariosWin(),
                                    new MyDesktop.TipoCambio()
				]";
        var  $es_Contador="[
                                    joshua.winEnvios,
                                    new MyDesktop.Clientes(),
                                    joshua.winEmbarques,
                                    new MyDesktop.TipoCambio()
				]";
        var  $es_Empleado="[
                                    joshua.winEnvios,
                                    new MyDesktop.Clientes()
                            ]";

	function __construct()
	{
		session_start(); 
		#parent::__construct();
		switch(func_num_args())
		{
			case 0:
              // echo $this->logueado() ." - ". trim($_COOKIE['usuario']);sleep(4);//exit;
				if(!$this->logueado() && trim($_COOKIE['usuario'])!="")
				{#si no esta logueado pero hay galleta, recuperar
					//echo "1";
					$this->setUsuario($_COOKIE['usuario']);
					parent::__construct($_COOKIE['usuario']);
				}
				else
				{#no logueado y no galleta
					if(isset($_SESSION['ss_usuario'])){
						#si hay usuario en la session...
						parent::__construct($_SESSION['ss_usuario']);//$this->getUsuario());
						$_COOKIE['usuario']=$_SESSION['ss_usuario'];//$this->getUsuario();
						//echo "2";	
					}else{
						//parent::__construct($_COOKIE['usuario']);
						//$this->setUsuario($_COOKIE['usuario']);
						//echo "3";
					}
					
				}break;
				
			#si recibe dos parametros, se esta autenticando y la respuestes en json
			#param 1: user ID
			#para 2: su contrasena
			case 1:	if(trim(func_get_arg(0)) ==""){$this->__construct();return;}
					
					#cargar el usuario
					parent::__construct(func_get_arg(0));
					break;
		}
	}
	
	function _loguear($pass){
		//iniciar variables de session
		$this->setUsuario($this->getId());
		$con=new Conexion();
	}
	
	function loguear($pass){
		#si no ha sido logueado aun
		if($this->getId()=="-1" || $this->getPassword()!=$pass){
		#si el login que mando no existe
			echo '{success:false,"error":"El login o la contraseña no son correctas. Inténtelo de nuevo."}';
			exit;
		}
		
		switch($this->getActivo())
		{
			case 0: echo "{success:false,error:'Lo siento, su cuenta ha sido deshabilitada. Contacte al administrador'}";exit;
			default:
				$this->_loguear($pass);
				echo '{success:true}';exit;
                                /*
                                 * title:"'.$this->getId()."(".$this->sucursal->getNombre().')",
                                    nivel:"'.$this->getNivelAcceso().'",
                                    wins:"'.$this->getNivelAcceso().'",
                                 */
		}
	}

        function getWins(){
            //echo $this->getNivelAcceso();
            switch($this->getNivelAcceso()){
                case "Administrador": $r=$this->es_Administrador;break;
                case "Contador": $r= $this->es_Contador;break;
                default: $r= $this->es_Empleado;break;
            }
            return ereg_replace('[[:space:]]+', ' ',trim($r));
        }

        function getHiddenComponentes(){
            switch($this->getNivelAcceso()){
                case "Administrador": return "false";
                case "Contador": return "false";
                default:  return "true";
            }
        }

	function logueado(){
		return (trim($this->getUsuario())!="")?true:false;
	}

	function desloguear(){
		setcookie("usuario","",time(),"/","");//$_SESSION["ss_usuario"]
		$_SESSION["ss_usuario"]="";
		$_COOKIE['usuario']="";
		unset($_SESSION["ss_usuario"]);
		unset($_COOKIE['usuario']);

        echo $this->logueado() ." - ". trim($_COOKIE['usuario']);exit;
		return "{success:true}";
	}
	
	function error(){
		return "{success:false,error:'Lo siento, su session ha caducado. Por favor registrese nuevamente'}";
	}

	function setUsuario($e){$_SESSION['ss_usuario']=$e;setcookie("usuario",$e,0,"/","");	}
	function getUsuario(){return $_SESSION['ss_usuario'];}
	
	function getVentanas(){
		switch ($this->getNivelAcceso()) {
			case "Administrador":return "[
					new MyDesktop.BoletosWin(),
					new MyDesktop.EnviosWin(),			
					new MyDesktop.BitacorasWin(),
					new MyDesktop.ColasWin(),
					new MyDesktop.UsuariosWin(),			
					new MyDesktop.ClientesWin(),
					new MyDesktop.ChoferesWin(),
					new MyDesktop.DuenosWin(),			
					new MyDesktop.SuburbanWin(),
					new MyDesktop.CorridasWin()
					//new MyDesktop.ConfirmarWin()
				]";
			
			default:return "[
					new MyDesktop.BoletosWin(),
					new MyDesktop.EnviosWin(),			
					new MyDesktop.BitacorasWin(),
					new MyDesktop.ColasWin(),
					new MyDesktop.ClientesWin()
				]";
		}
	}
}
?>
